<%--
  Created by IntelliJ IDEA.
  User: lml
  Date: 2022/10/28
  Time: 14:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
  <title>学生展示</title>
  <!-- 注意：项目正式环境请勿引用该地址 -->
  <link rel="stylesheet" href="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/css/layui.css" >

  <style type="text/css">
    .layui-table-cell{
      height:auto!important;
      white-space:normal;
    }
  </style>
</head>
<body>
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-xs" lay-event="edit" >编辑</a>
  <a class="layui-btn layui-btn-xs" lay-event="del" >删除</a>
  <a class="layui-btn layui-btn-xs" lay-event="share" >分享二维码</a>
  <%--    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>--%>
</script>

<script type="text/html" id="toolbarDemo">
  <div class="layui-btn-container">
    <button class="layui-btn layui-btn-sm" lay-event="addStu">添加</button>
    <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页数据</button>
    <button class="layui-btn layui-btn-sm" lay-event="isAll">是否全选</button>
  </div>
</script>
<div class="addPlane">
  <form class="layui-form" action=""  id="savePlaneForm" style="display: none"  lay-filter="updateUserFormFilter">
    <input type="hidden" name="uid" value=${user.id}>
    <input type="hidden" name="id">
    <div class="registerbox-title">执行计划</div>
    <div class="layui-form-item">
      <label class="layui-form-label">计划名字</label>
      <div class="layui-input-inline">
        <input type="text" name="planename" id="planename" onblur="checkname(this)"  lay-verify="required" placeholder="请输入计划名称" autocomplete="off"
               class="layui-input">
      </div>
    </div>

    <div  id="test-range">
      <div class="layui-form-item">
        <div class="layui-inline">
          <label class="layui-form-label">开始时间</label>
          <div class="layui-input-inline">
            <input type="text" id="startDate" lay-verify="required" name="begintime" class="layui-input" placeholder="开始日期">
          </div>
          <%--                    <div class="layui-form-mid">-</div>--%>

        </div>
        <div class="layui-form-item">
          <div class="layui-inline">
            <label class="layui-form-label">结束时间</label>
            <div class="layui-input-inline">
              <input type="text" id="endDate" lay-verify="required" name="endtime" class="layui-input" placeholder="结束日期">
            </div>
          </div>
        </div>
      </div>
    </div>
    <%--状态--%>
    <div class="layui-form-item">
      <label class="layui-form-label">状态</label>
      <div class="layui-input-block">
        <input type="hidden"  id="status" name="status" value="1"/>
        <input type="checkbox" name="statusswitch" checked  lay-skin="switch" lay-filter="switchStatus" lay-text="启用|禁用">
      </div>
    </div>

    <div class="layui-form-item pass" >
      <label class="layui-form-label">邀请码</label>
      <div class="layui-input-inline">
        <input  type="text" name="code" id="code" lay-verify="required" readonly
                autocomplete="off" class="layui-input"  >
        <label>不满意？<a href="#" onclick="getcode()" id="loginRegister">重新生成验证码</a>
          <%--                    <button type="button" onclick="getcode();" class="layui-btn layui-btn-warm">邀请码</button>--%>

      </div>
    </div>

    <div class="layui-form-item">
      <div class="layui-input-block">
        <button class="layui-btn" lay-submit id="savebtn" lay-filter="formPlaneUser">添加</button>
        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
      </div>
    </div>

  </form>
</div>

<%----%>

<%--二维码开始--%>
<div id="qrcode" style="display: none"></div>
<%--存放二维码图片的地方--%>
<div style="display: none"><img src="" id="erweima" style="margin:0 auto;"></div>

<%--二维码结束--%>


<%--查询条件--%>
<form class="layui-form" action="">
  <div class="layui-inline">
    <label class="layui-form-label">名字</label>
    <div class="layui-input-inline">
      <input type="text" name="planename"  placeholder="请输入计划名字" autocomplete="off" class="layui-input">
    </div>
  </div>

  <div class="layui-inline">
    <div class="layui-input-inline">
      <button class="layui-btn" lay-submit lay-filter="formDemo">查询</button>
      <button type="reset" class="layui-btn layui-btn-primary">重置</button>
    </div>
  </div>
</form>


<table class="layui-hide" id="test" lay-filter = "test"></table>
<!-- 注意：项目正式环境请勿引用该地址 -->

<script src="${pageContext.request.contextPath}/static/jquery-3.6.1.min.js"></script>
<script src="${pageContext.request.contextPath}/static/html2canvas.min.js"></script>
<script src="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/layui.js"></script>
<script src="${pageContext.request.contextPath}/static/layui-v2.7.6/layui/qrcode.js"></script>
<script>

  layui.use(['table','layer','form','jquery','laydate'], function(){
    var table = layui.table;
    var layer = layui.layer;
    var form = layui.form;
    var $ = layui.jquery;
    var laydate=layui.laydate;
    var namestatus=true;

   /* laydate.render({
      elem: '#test-range' //开始时间和结束时间所在 input 框的父选择器
      //设置开始日期、日期日期的 input 选择器
      ,range: ['#startDate', '#endDate'] //数组格式为 layui 2.6.6 开始新增
    });*/

    table.render({
      // element  元素
      elem: '#test'
      ,page:true
      ,limit:2
      ,limits:[2,4,6,8]
      ,toolbar: '#toolbarDemo'
      ,url:'${pageContext.request.contextPath}/tmhtplane/queryall' //  表格了里面所需要的数据就是一个list里面有很多的map、对象
      ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
      /*,totalRow:true*/
//传过来的数据进行处理  laydata
      ,parseData: function (res) {
        return {
          "code":res.code,
          "msg":res.msg,
          "count": res.data.total,//从返回的json数据中取出总行数
          "data": res.data.list//返回的json数据有两层，layui不支持多层数据，所以是res.list
        }
      }
      ,cols: [[
        {type: 'checkbox', fixed: 'left'}
        // field 后面跟的内容  必须跟后台传过来的数据里面的map 的key保持一致
        ,{field:'id', title: 'ID', sort: true}
        ,{field:'user', title: '创建人',templet:function(d){

            return '<span>'+d.user.username+'</span>';
          }} //width 支持：数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度，layui 2.2.1 新增
        ,{field:'planename', title: '计划名称',sort: true}
        ,{field:'begintime', title: '开始时间', sort: true}
        ,{field:'endtime', title: '结束时间', sort: true}
        ,{field:'code', title: '邀请码', sort: true,}
        ,{field:'status', title: '状态', sort: true,templet:function(d){

            if(d.status==1){
              return '<input type="checkbox" checked value="'+d.id+'"  lay-skin="switch" lay-filter="switchStatus1" lay-text="启用|禁用">';
            }else{
              return '<input type="checkbox" value="'+d.id+'"   lay-skin="switch" lay-filter="switchStatus1" lay-text="启用|禁用">';
            }
          }}
        ,{fixed: 'right', title:'操作',  minWidth: 125, toolbar: '#barDemo'}
      ]]

    });

    // 监听单元格里面的开关
    form.on('switch(switchStatus1)', function(obj){
      //alert(JSON.stringify(obj));
      var status=1;
      if(this.checked){
        status=1
      }else{
        status=2;
      }
      // 修改这条数据的状态即可
      $.ajax({
        type:"post",
        data:{id:obj.value,status:status},
        url:"${pageContext.request.contextPath}/tmhtplane/updatas",
        success:function(d){
          if(d.code==0){
            layer.msg("修改成功",{icon:"1"});
            table.reload('test');
          }
        }
      })

    });

    // 监听开关
    form.on("switch(switchStatus)",function (d){
      // 选中的时候  状态的值1   未选中的时候  2
      var flage=$(this).prop("checked");
      if(flage==true){
        $("#status").val(1);
      }else{
        $("#status").val(2);
      }
    });





    // 查询
    form.on('submit(formDemo)', function(data){
      console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
      console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
      table.reload('test', {
        where: data.field,
        page: {
          curr: 1 //重新从第 1 页开始
        },
      });
      return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
    });



    // 工具栏事件
    table.on('toolbar(test)', function(obj){
      var uid = obj.config.uid;
      var checkStatus = table.checkStatus(uid);
      var othis = lay(this);
      switch(obj.event){
        case 'getCheckData':
          var data = checkStatus.data;
          layer.alert(layui.util.escape(JSON.stringify(data)));
          break;
        case 'getData':
          var getData = table.getData(id);
          console.log(getData);
          layer.alert(layui.util.escape(JSON.stringify(getData)));
          break;
        case 'isAll':
          layer.msg(checkStatus.isAll ? '全选': '未全选')
          break;
        case 'addStu':
          $("#savePlaneForm")[0].reset();
          getcode();
          layer.open({
            type: 1,
            area: ['500px', '400px'],
            offset: '100px',
            content:$("#savePlaneForm"),
            cancel: function(index, layero){

              layer.close(index);
              $("#savePlaneForm").hide();
              return false;
            }
          });
          break;
      };
    });

    //触发单元格工具事件
    //监听行工具事件
    table.on('tool(test)', function(obj){
      var data = obj.data;
      //console.log(obj)
      if(obj.event === 'edit'){
        layer.open({
          type: 1,
          area: ['500px', '400px'],
          offset: '100px',
          content:$("#savePlaneForm"),
          cancel: function(index, layero){

            layer.close(index);
            $("#savePlaneForm").hide();
            return false;
          }
        });
        form.val('updateUserFormFilter',data);
      }
      if(obj.event === 'share'){
        var url="http://43.138.80.195:8080${pageContext.request.contextPath}/view/mhtLogin.jsp";

        //生成100*100(宽度100，高度100)的二维码
        $('#qrcode').qrcode({
          render: "canvas", //也可以替换为table
          width: 100,
          height: 100,
          foreground: "green",
          background: "#FFF",
          text: url
          // $("#output").qrcode(encodeURI("http://中文中文"));//使用encodeURI进行转码
        });

        //
        $("#qrcode").css("display","block");
        createImg();
        layer.open({
          type: 1,
          area: ['400', '400'],
          offset: '100px',
          content:$('#qrcode'),
          cancel: function(index, layero){

            layer.close(index);
            $("#qrcode").empty();
            $("#qrcode").css("display","none");
            $("#erweima").attr("src","");
            return false;
          },
          btn:['下载图片'],
          //绑定第一个按钮的点击事件
          yes: function(index) {
            //下载图片到本地
            // var a = document.createElement('a');
            // var event = new MouseEvent('click');
            // a.download = "分享投票二维码";
            // //a.href = url;
            // //a.dispatchEvent(event);
            var oImg =$('#erweima').attr("src");
            var oA = document.createElement("a");
            oA.download = '';// 设置下载的文件名，默认是'下载'
            oA.href = oImg;
            document.body.appendChild(oA);
            oA.click();
            // oA.remove(); // 下载之后把创建的元素删除
          }

        });
      }

      if(obj.event === 'del'){
        $.ajax({
          url:"${pageContext.request.contextPath}/tmhtplane/del",
          type:"post",
          dataType:"JSON",
          data:{"id":obj.data.id},
          success:function (d){
            if(d.data==0){
              layer.msg("该计划已被启用，无法删除",{icon:1});
            }else if(d.data==1){
              layer.msg("删除成功",{icon:1});
            }else {
              layer.msg("删除失败",{icon: 1})
            }
          }
        })
      }
    });

    checkname=function(Obj){
      var planename=$("#planename").val();

      $.ajax({
                url:"${pageContext.request.contextPath}/tmhtplane/checkname",
                type:"post",
                dataType:"JSON",
                  data:{planename:planename},
                success:function (d){
                  if(d.data==true){
                    layer.alert("该名字已经存在！！！");
                    namestatus=false;
                  }else {
                    $("#savebtn").prop("disable",false);
                  }
                }
              }


      )
    }

    //提交表单
    // Layui提交表单 监听提交  data代表的是form表单里面的所有的内容
    form.on('submit(formPlaneUser)', function(data){
      alert(JSON.stringify(data.field));
      var params={};
      params.id=data.field.id;
      params.planename=data.field.planename;
      params.uid=data.field.uid;
      params.begintime=data.field.begintime;
      params.endtime=data.field.endtime;
      params.code=data.field.code;
      params.status=data.field.status;
      alert("namestatus"+namestatus)
      if (namestatus==true){
      $.ajax({
        url:"${pageContext.request.contextPath}/tmhtplane/addplane",
        type:"post",
        dataType:"JSON",
        data:params,//表单里所有数据
        success:function (ret){
          if (ret.data == true){
            //关闭所有弹框
            layer.closeAll();
            $("#savePlaneForm").hide();
            //刷新页面
            location.reload();
            table.reload('test');
          }
        }
      })
  return false;
}

    });


    getcode=async function(){

      // 生成的邀请码不能重复
      // 定义fpa的邀请码是以f未开头
      var code1=Math.floor(Math.random()*10)+"";
      var code2=Math.floor(Math.random()*10)+"";
      var code3=Math.floor(Math.random()*10)+"";
      var code4=Math.floor(Math.random()*10)+"";
      var code="f"+code1+code2+code3+code4;
      var status=false;
      // 名字在数据库中不存在时候添加  存在就不能添加
      await $.post("${pageContext.request.contextPath}/tmhtplane/checkcode",{code:code},function(d){
        alert(d.data)
        if(d.data==true){
          status=true;
        }else{
          status=false;
        }
      })

      if(status==true){
        $("#code").val(code);
      }else{
        getcode();
      }

    }





    var createImg = function () {
      new html2canvas(document.getElementById('qrcode'), {
        width: 100,
        height: 100,
        backgroundColor: "transparent",        //背景图片透明
        allowTaint: true,    //跨域
        useCORS: true         //跨域
      }).then(canvas => {
        // canvas为转换后的Canvas对象
        let oImg = new Image();
        oImg = canvas.toDataURL('image/png');  // 导出图片
        $("#erweima").attr('src', oImg);


        // var oA = document.createElement("a");
        // oA.download = '';// 设置下载的文件名，默认是'下载'
        // oA.href = oImg;
        // document.body.appendChild(oA);
        // oA.click();
        // oA.remove(); // 下载之后把创建的元素删除
      });
    }
  });
</script>

</body>
</html>

